#pragma once

#include "resource.h"
#include "defs.h"

#pragma pack(push,1)

typedef struct DSInofo4C
{
	char field_0[24];
	int loopCount;
	unsigned __int16 *field_1C;
	int field_20;
	unsigned __int16 *field_24;
	unsigned __int8 *field_28;
	int field_2C;
	int field_30;
	int field_34;
	int FrameNum;
	unsigned __int16 *field_3C;
	int field_40;
	int field_44;
	int field_48;
}DSInofo4C;





struct  CmdInfoSt22
{
	unsigned __int8 Num1;
	unsigned __int8 Num2;
	char field_2;
	char Len3;
	unsigned __int16 Val4;
	unsigned __int8 Val6;
	unsigned __int8 CmdLen6;
	unsigned char CmdBuf8[2];
	__int16 ValA;
	unsigned __int16 ValC;
	unsigned __int8 ValE;
	char field_F;
	char field_10;
	unsigned __int8 Len11;
	__int16 Buf12[7];
	unsigned __int8 Len20;
	char Buf21[9];
	unsigned __int16 DatavL2A;
	unsigned __int8 DataVal2C;
	unsigned __int8 LEN2D;
	char CmdBuf2E[8];
	unsigned __int8 CmdLen36;
	unsigned __int8 CmdBuf37[3];
	unsigned __int8 Len3A;
	unsigned __int8 Buf3B[9];
	unsigned __int8 Len44;
	char field_45;
	unsigned __int16 Val_46;
	unsigned __int8 Buf48;
	char field_49[55];
	unsigned __int16 field_80;
	unsigned __int8 field_82;
	char field_83[25];
	unsigned __int16 field_9C[4];
	char BufA4;
	char field_A5;
	unsigned __int8 field_A6[16];
	char field_B6;
	unsigned __int8 LenB7;
	char field_B8;
	char field_B9;
	unsigned __int16 CMdBufLenB9;
	unsigned __int8 LenBB;
	unsigned __int8 field_BC[8];
	unsigned __int8 XXCount;
	char XXXBuf[6];
	__int16 CmdBufCB;
	char CmdBufCD;
	char field_CE;
	char field_CF;
	unsigned __int8 field_D0;
	unsigned __int8 BufD1[7];
	unsigned __int8 CmdLemD7;
	char field_D8;
	char field_D9[22];
	unsigned __int8 ValF1;
	char BufF2[6];
	unsigned __int16 field_F8[3];
	unsigned __int16 ValueFC;
	unsigned __int16 CmdOmdex;
};
#pragma pack(pop)



typedef struct SpecDetail
{
	char Num;
	char field_1;
	char field_2;
	char field_3;
	int SpecNum;
	__int16 TwoByteOffset;
	char field_A;
	char field_B;
	int DWORDValue;
	__int16 unknowVal;
	char field_12;
	char field_13;
	int unknowVal4Byte;
	int unknowVal4Byte2;
	__int16 unknowVal2Byte3;
	char field_1E;
	char field_1F;
	int unknowVal4Byte4;
}SpecDetailInfo;


#pragma pack(push,2)
typedef struct  SpecInfo
{
	char SpecNUm;
	char field_1;
	__int16 field_2;
	int field_4;
	SpecDetailInfo *SpecDetailArr;
	__int16 SizeCount;
	__int16 field_E;
	int SpecNumArr[16];
	int field_50;
	int field_54;
	int field_58;
	int field_5C;
	int field_60;
	int field_64;
	int field_68;
	int field_6C;
	int field_70;
	int field_74;
	int field_78;
	int field_7C;
	int field_80;
	int field_84;
	int field_88;
	int field_8C;
	int field_90;
	int field_94;
	int field_98;
	int field_9C;
	int field_A0;
	int field_A4;
	int field_A8;
	int field_AC;
	int field_B0;
	char field_B4[314];
	char field_1EE;
	char field_1EF;
	char field_1F0;
	char field_1F1;
	char field_1F2;
	char field_1F3;
	char field_1F4;
	char field_1F5;
	char field_1F6;
	char field_1F7[272];
	char field_307;
	int field_308;
	int field_30C;
	int field_310;
	int field_314;
	int field_318;
	int field_31C;
	__int16 field_320;
	int field_322;
	int field_326;
	int field_32A;
	char field_32E;
	char field_32F;
	__int16 field_330[14];
	__int16 field_34C;
	char field_34E;
	int field_34F;
	int field_353;
	char field_357;
	__int16 field_358[180];
	char field_4BF;
	char field_4C0;
	char CmdLen;
	char field_4C2;
	char field_4C3[217];
	char field_59C;
	char field_59D[71];
	char field_5E5;
	char field_5E6;
	char field_5E7;
	int field_5E4;
	char field_5E8[10504];
	int kkNum;
	char xxNum;
	char field_2EF5;
	char field_2EF6;
	char field_2EF7;
	char field_2EF8;
	char field_2EF9;
	char field_2EFA;
	char field_2EFB;
}SpecInfoSt;
#pragma pack(pop)

#pragma pack(push,2)
typedef struct EcuSt
{
	unsigned __int8 EucIndex;
	char field_1;
	int SingleSize;
	int AllocSize;
	char field_A;
	char field_B;
	char field_C;
	char field_D;
	char field_E;
	char field_F;
	char field_10;
	char field_11;
	char field_12;
	char field_13;
	char field_14;
	char field_15;
	char field_16;
	char field_17;
	char field_18;
	char field_19;
	char field_1A;
	char field_1B;
};
#pragma pack(pop)


typedef struct DsCalInfo
{
	int Index;
	int ID1;
	int ID2;
};





typedef struct DsSt
{
	__int16 DsNum;
	__int16 field_2;
	char field_4;
	char field_5;
	char field_6;
	char field_7;
	int *field_8[2];
	char field_10[2044];
	unsigned __int16 DsXXCount;
	CmdInfoSt22 CmdInfoArr80E[104];
	unsigned __int16 field_70DE;
	int *field_70E0;
	unsigned __int16 CalInfoCount;
	char field_70E6;
	char field_70E7;
	int field_70E8;
	DsCalInfo **field_70EC;
	__int16 DSPackNum;
	__int16 field_70F2;
	int field_70F4;
	void *maloc24hAddr;
	CmdInfoSt *DsCmdArr;
	char field_7100;
	char field_7101;
	char field_7102;
	unsigned __int8 DsItemCount;
	char field_7104;
};




typedef struct CmdDs
{
	__int16 field_0;
	__int16 field_2;
	__int16 field_4;
	char field_6;
	unsigned __int8 field_7[100];
	char field_6B;
	unsigned __int8 *field_6C;
};




struct DiagCodeP5
{
	char field_0[41024];
	char field_A040;
	char field_A041[8192];
	char field_C041[8192];
	char field_E041[8192];
	char field_10041[8192];
	char field_12041[8192];
	char field_14041[8192];
	char field_16041[8192];
	char field_18041[54227];
	char field_25414;
};

typedef struct DsRcv
{
	char field_0;
	char field_1;
	char field_2;
	char field_3;
	char RcvPos_01;
	char RcvPos_02;
	char field_6;
	char field_7;
	unsigned __int8 *SaveRcvAddr;
}DsRcvSt;


typedef struct DtcRecDataSt
{
	unsigned __int16 SysDtcNum;
	char field_2;
	char diagMode;
	int DtcArrNum;
	int *DtcIDArrPtr;
	char *DtcDisArrPtr;
	unsigned __int8 DtcRulerVal[4];
}DtcRecDataSt;




struct DtcSt
{
	int DtcNum;
	int DTCcurOrHisID;
};


struct DtcShowst
{
	char field_0;
};


struct FreeFrzSt
{
	char field_0[11];
	unsigned __int8 DsCount;
	DsSt **DsInfo;
	int field_10;
	int field_14;
	char field_18;
	char field_19;
	char field_1A;
	char field_1B[28915];
	char field_710E;
	char field_710F;
	int DtcArr[137427];
};



#pragma pack(push,1)
typedef struct SysListInfoSt
{
	int offset;
	int SysNameID;
	int offset2;
	int PromtInfoID;
	char unknow1;
	char unknow2;
	char field_12;
	char field_13;
	int EcuFileNameID;
	char judgeFlag;
	char FrzCaseNum;
	char unknow6;
	char unknow7;
	char unknow8;
	char field_1D;
	char field_1E;
	char field_1F;
	int EndFID;
	char unknow3;
	char unknow4;
	char field_26;
	char field_27;
	int SysNameID2;
	int CANRegisterNameID;
	int ReadOffset;
	int IsexitSysFlag;
	int EcuDataArrNum;
	unsigned __int8 *ArrEcuindexAddr;
	EcuSt *ArrEcuInfoAddr[256];
	char field_440;
	char field_441;
	char field_442;
	char field_443;
	int UnKnowAddrSize6F24;
	char DsFlag;
	char field_449;
	char field_44A;
	char field_44B;
	DsSt *DsSt7104;
	char field_450;
	char field_451;
	char field_452;
	char field_453;
	SpecInfoSt *SpecInfo;
	char HaveFreeFlag;
	char field_459;
	char field_45A;
	char field_45B;
	FreeFrzSt *FreezSt;
	char field_460[244];
	char field_554[256];
	int field_654[256];
	char field_A54[256];
	char field_B54[256];
	char field_C54[256];
	char field_D54[256];
	char field_E54[49000];
	int field_CDBC[92];
	__int16 field_CF2C;
	char field_CF2E;
	char field_CF2F;
	DiagCodeP5 *DiagCodeP5info;
	int field_CF34;
	int field_CF38;
	int field_CF3C;
	DSInofo4C* UnKnowAddrSize4C;
	char Index;
	char field_CF45;
	__int16 field_CF46[50];
	char field_CFAA;
	char field_CFAB;
	__int16 field_CFAC[50];
	char ArrNUm;
	char field_D011;
	__int16 field_D012[200];
	char field_D1A2;
	char field_D1A3;
};
#pragma pack(pop)

typedef struct CmdInfo
{
	__int16 CmdFrameNum;
	char field_2;
	char field_3;
	char field_4;
	unsigned __int8 CmdLen;
	unsigned __int8 SysCmdBuf[50];
	unsigned __int8 CmdLen2;
	unsigned __int8 SysCmdBuf2[150];
	unsigned __int8 CmdLen3;
	unsigned __int8 SysCmdBuf3[50];
}CmdInfoSt;

typedef struct TOKEN
{
	unsigned __int8 AreaCode;
	char Connector;
	__int16 field_2;
	int field_4;
	int FuncConfig;
	char SysFunCfgInfo;
	char g_iCanFlag;
	__int16 field_E;
	char field_10;
	char field_11;
	char SeriesName[14];
	EcuSt *ArrEcuInfo[256];
	EcuSt *ViewArrInfo[256];
	int FinalSelID;
	int FinalSysInfoOffset;
	__int16 SysListNum;
	__int16 field_82A;
	int SysListCanUseNum;
	SysListInfoSt *SysInfoArr;
	char pInfoAddr;
	char field_835;
	char field_836;
	char field_837;
	char field_838[120];
	int ReadOffset;
	char InitCommMode;
	unsigned __int8 KwpCmdModeVal;
	char EnterMode;
	char Flag;
	char field_8B8;
	char field_8B9;
	__int16 gap8BA;
	int DtcDataOffset;
	int field_8C0;
	int field_8C4;
	int field_8C8;
	int field_8CC;
	int field_8D0;
	__int16 TototaOEBinDataAboutCanBPS;
	__int16 field_8D6;
	int fBps;
	int ToolID;
	char field_8E0;
	char fByteToByte;
	__int16 wPacketToPacket;
	int unknowToolID;
	int tToolID;
	char field_8EC;
	char EcuIDArrIndex;
	__int16 field_8EE;
	int EcuIDArr[4];
	char gap900[4];
	char field_904;
	char field_905;
	char PinBuf[10];
	int EcuArrNum;
	unsigned __int8 *EcuInfoAddr;
	EcuSt *BasicfunInfoArr[256];
	__int16 field_D18;
	__int16 CmdDataInfoCount;
	CmdInfoSt CmdInfoArr[255];
	unsigned __int16 xxCount;
	__int16 field_10E1C;
	char field_10E1E;
	char field_10E1F;
	CmdInfoSt22 field_10E20[1024];
	char field_51620[32821009];
	char field_1F9E531;
	char field_1F9E532;
	char field_1F9E533;
	int field_1F9E534;
	__int16 OffsetValData;
	char field_1F9E53A;
	char field_1F9E53B;
	int *DtcIDSavepoint;
	int field_1F9E540;
	int field_1F9E544;
	char gap1F9E548[22];
	char field_1F9E55E[51916];
	char field_1FAB02A;
	char field_1FAB02B;
	__int16 ArrNum;
	char field_1FAB02E[8];
	CmdDs field_1FAB036[10];
	char field_1FAB496[27542];
	char field_1FB202C[195332];
	char DtcHisCurFFlag;
	char DtcCurIDNum;
	char HisDtcNum;
	char DeterminedDtcNUm;
	int DtcCurValARr[12];
	char gap1FE1B64[2];
	char field_1FE1B66;
	char field_1FE1B67[149];
	int DtcHistoryValArr[32];
	int field_1FE1C7C;
	char field_1FE1C80[68];
	int DetermindedDtcIDArr[27];
	char field_1FE1D30;
	char field_1FE1D31;
	char field_1FE1D32;
	char field_1FE1D33;
	char field_1FE1D34;
	char gap1FE1D35[87];
	char *DtcPathBuf;
	__int16 Dtc200Val;
	__int16 field_1FE1D92;
	int DiagWay;
	unsigned __int8 tModeOrFreezNum;
	char ClearDtcFlag;
	char field_1FE1D9A;
	char field_1FE1D9B;
	char field_1FE1D9C[320];
	char field_1FE1EDC;
	char UseAAA;
	char field_1FE1EDE[426];
	char field_1FE2088;
	char field_1FE2089;
	char field_1FE208A;
	char field_1FE208B;
	char field_1FE208C;
	unsigned __int8 Size;
	char field_1FE208E;
	char field_1FE208F;
	__int16 field_1FE2090;
	char field_1FE2092;
	char field_1FE2093;
	char field_1FE2094[68000];
	int XXAddr;
	char field_1FF2A38[150];
	char field_1FF2ACE[514];
	char field_1FF2CD0;
	char field_1FF2CD1[22813623];
	char field_35B4888[10686752];
	char field_3FE59A8;
}tt_Token, *ptt_Token;








int j_SetAreaFunc(int AreaKeyNum);
int j_GetButtType();
int sub_C71525D8(int MenuSelID);
int j_GetSystemProfile(char* PathSrc, char* SeriesBuf);
int j_MakeAutoSelect();
void j_GetMakeFromAppIni(char *a1, int a2);
unsigned int j_SetMenuAutoSelect(unsigned int CoptLen, const void *a2);
int j_ManualAutoSelect();
int j_SetSystemODO(int ID, float CalNum, int Index);
int GetTextToMap();
int GetDtcStatus_Content_MapID_();
int GetTextFromTextLibSpe(unsigned int, char *, unsigned int);
int SetDiagFuncInfo(int a1, char *a2, int a3);

int CheckSystemReadOdo(unsigned __int8 *OdoRcvBuf, int Len, int Mode, int MaxWaitTime, int ToolID, int EcuID, tt_Token *token);
int j_ReadToyotaOdo(int ConType);
int ShowMessageBoxID(unsigned int ContentID, unsigned int titleID, unsigned int BtnType);
int CHK_CAN_BUS_iProtect(int ConType, __int16 Data, unsigned __int8 *a3);
int usleep(int);
int j_GetProductTypeDirPath(const char *a1, unsigned __int8 *s, char *a3);
int j_StringFind(unsigned __int8 *a1, const char *a2, signed int a3);
void j_GetSubString(const char *a1, char *a2, int a3, int a4);
int j_GetStdCfgValue(char *a1);
int j_AreaAutoChcek();
int j_GetLangurageCode(char *a1);
char* GetFileNameText(int);
int j_AreaAuotSelect(int MenuSelID);
int j_InitDesoMode(tt_Token *a1);
int JpPrtlSearch(int Connector, void *VehicleData, tt_Token *token);
char SelectPIN(char ConnectorType, char FuncType, char IsEnable, char InputPin, char OutputPin);

int j_InitKWPISOMode(int Connector, unsigned __int8 *a2, int fByteToByte, int wPacketToPacketLow, int wPacketToPacketHigh, int fBps);
int InitAddressMode(int Connector, unsigned __int8 *pinBuf, int Num1, int Num2, int wPacketToPacket, int fBps);
int SetEcuCommunicationVoltageLogic(uint8_t ucWorkVoltage, uint8_t ucLogic);
int SetCommunicationParameter(unsigned char ucStartBit, unsigned char ucDataBit, unsigned char ucStopBit, unsigned char ucCheckWay);
int SetEcuCommTimeInterval(float fByteToByte, int32_t wPacketToPacket, int iOverTime);
int SetEcuBaudRate(float fBps);
void SetCommunicationMaximumWaitTime(int32_t iCommunicationMaximumWaitTime);
int EnableLLine(int8_t bEnableLLine);
int j_InitCommSet(int Index, tt_Token *a2);
int j_AutoSearchSelect(int MenuSelID);
int CanSetParameterNormal(int ConnectorType, char* a2);
int MenuPro(FILE *FP, int a2, char *a3);
int j_DoUpTask();
int j_GetSelectedMenuPath(char *a1, size_t a2);
int j_GetCurrentMenuSubItemNum();
int sub_C7050044(int off, unsigned int *a2);
int j_GetMenuSubItemSaveData(int a1);
int sub_C704FD5C(int off, unsigned int *a2);
int sub_C704FFB0(int off, _DWORD *a2);
unsigned int j_CheckCurrentMenuSaveMark(int a1, int a2);
int AddMenuTextID(unsigned int ID);
int j_VehicleModeSelectNotice(unsigned int, unsigned int);
int j_ModeAutoSelectSpec();
int j_VehicleYearAutoSelect();
int j_EngineTypeAutoSelect();
int j_ModeOrVinAutoSelect();
int j_GetAutoSelect(int);
int ShowMenuGetSelectedItem2HD(_DWORD, _DWORD, __int16 *, __int16 *, char *);
int MenuEnableShow(unsigned char*);
int InitMenuID(int ID);
void InitMenu2HD(int, _DWORD, int, _DWORD);
int j_AutoJumpMenu(char*, FILE*);
int j_DoDownTask(int MenuSysID);
int j_j_GetHistorySelDownId();
int j_VehicleSystemScan(int SysID);
int ShowMenuGetSelectedItem(_DWORD, _DWORD, __int16 *);
unsigned int sub_C704F7F8(unsigned __int8 *ReadBuf, int Offset, FILE *stream, int *MenuPath);
unsigned int sub_C7050904(int a1, FILE *a2, int *a3);
void AddCurMenu2HD(unsigned int *, int, _DWORD);
void AddHisTitleMenu2HD(int, unsigned int *, int, _DWORD);
int InitSpecialFunction(unsigned int ID);
int AddSpecialFunctionColumn(unsigned int ID, unsigned int b, unsigned int c);
__int16 GetEcuInfo(int *a1, tt_Token *a2);

int j_GetSystemSrv(unsigned __int8 *a1, int a2);

int ShowMessageBox(char* describ, char* MenuID, unsigned char buttonType);


int CheckToyotaTblData(int a1, EcuSt**a2, tt_Token *token);
unsigned int FrameCheckSupport(int a1, int a2, int a3, int *a4, tt_Token *a5);

int CheckEcuTblData(int AddrID, tt_Token *token);

void j_CheckSystemMenuInfo(int *p, tt_Token *a2);
void CheckSystemMenuInfo(void **p, tt_Token *token);
int j_FreeSTokenFunc(tt_Token *a1);

int GetSysFuncInfoData(tt_Token *token);
int GetInfoFromAddrPart(tt_Token *token);

int GetSystemCanFilter(int OffsetVal, tt_Token *token);


int MultiPackFunc(unsigned __int8 *CmdDataAddr, unsigned int Mode, _BYTE *CmdBuf, unsigned int BYteNum, int KwpCmdMode, tt_Token *token);
unsigned __int16 CANBUSEnterMode(int a1, tt_Token *token);

int SaveA8Command(int a1, unsigned __int8 *a2, _WORD *a3, unsigned char *a4);
int CmdSendWithoutRec(tt_Token *a1, unsigned __int8 *a2, unsigned int a3, int a4);
int CanSendMulFrameGetMulFrame(int iSendDataLength, unsigned char *pDataToSend, unsigned char *pRecBuffer, int iRecBufferLength);
int KwpSendDataToEcuGetAnswer(unsigned char ucSendDataTimes, unsigned char *pReceiveBuffer, int iLengthReceiveBuffer, int iFrameNumber, ...);
int IsoSendDataToEcuGetMultiFrameAnswer(int iLengthSendToEcuData, unsigned char *pToEcuData, unsigned char *pReceiveBuffer, int iLengthReceiveBuffer);
int SetLinkKeep(uint8_t *pLinkCommand, int iCommandLength, int iLinkCommandReturnLength, int iLinkKeepTime);
int SetCan20LinkKeep(uint8_t *pLinkCommand, int iCommandLength, int iLinkCommandReturnLength, int iLinkKeepTime);
int GetJudgeByteDataPosByA8(int a1, unsigned int a2, int a3, unsigned __int8 *a4);
int ConvertPid(int a1, int a2, unsigned __int8 *a3, _BYTE *a4, unsigned char* a5, unsigned int a6, unsigned __int8 *a7);
int BeginCombination(void);
int EndCombination(void);
void SetCommunicationLineVoltage(int, int, int);
int CommSubFunc_00000003(unsigned __int8 *RecvBuf, int, int, int, unsigned __int8 *CmdBuf);
int ToyotaKwpSendDataToEcuGetMultiFrameAnswer(int Num1, unsigned __int8 *CmdBuf, unsigned __int8 *RecvBuf, int Num2, int Num3);
int EnterSysNormal(int *EcuInfo, tt_Token *token);
int QuickTestAndSystemReport(int SysCount, int *ArrSysNameStrBufAddr, int *ArrSysNameID, int *ArrSysOffset, tt_Token *token);
unsigned int QuickTestInterface_Ex(int SysCount, int *ArrSysNameStrBufAddr, int *ArrSysNameID, int *ArrSysOffset, tt_Token *token);
int SystemScanAndReadDtc_Ex(int OffsetVal, char *Buf, int MaxSize, tt_Token *Token);
void GetQuickTestDtc_Ex(int *result, char *a2);
int GetSendCmdSearchIndex(int a1, int a2, unsigned __int8 *a3, _WORD *a4, tt_Token *token);
int CheckProtLink(int a1, int a2, tt_Token *token);

unsigned int GetISOBaundRate(int a1, EcuSt **EcuInfoArr, tt_Token *a3);
int OneToOne_SendDataToEcuGetAnswer(uint8_t ucSendDataTimes, unsigned char *pReceiveBuffer, int iLengthReceiveBuffer, int iFrameNumber, ...);
int AddressCodeCommunicationWay(unsigned char ucAddressCode, unsigned char *pReceiveBuffer,
	int iLengthReceiveBuffer, int fBps, int8_t bRecognizeBaudRate, int bSecondByteReverseReturnToECU, 
	int iReceiveFrameNumber, int iLengthEachFrame);
unsigned char CheckXOR(char * pDataBuffer, int32_t iDataLen);
int SetEnterFrame(unsigned char *pEnterFrameCommand, int iCommandLength);
int ManualSelectSystem(tt_Token *token);
unsigned __int16 GetFreezeDsData(int *a1, tt_Token *token);
unsigned __int16 CheckFrzFrmDataInfo(int Num, tt_Token *token, int Addr, int indexNum);
int ShowFrzDsItemMenu(DsSt *Data, tt_Token *token);
int GetFrzFrmDataP3(int A1, tt_Token *, char *Data);
int GetFrzFrmListP4(int SysIndex, tt_Token *token, char *Data);

int GetFrzFrmDataDK(int SysIndex, tt_Token *token, char *Data);
int GetFrzFrmDataDKABS(int SysIndex, tt_Token *token, char *Data);
int GetFrzFrmDataDKCGW(int NUmVal, int CurIndex, tt_Token *token, char *DataAddr);
int GetFrzFrmDataDk_Roof(int A1, tt_Token *, char *Data);
int ShowFrzDsItemMenu_P5(char *Data, tt_Token *token);
uint8_t req_and_ans(char *path, unsigned char *req, uint8_t req_len, unsigned char *ans, uint8_t *ans_len);
int Respond(unsigned char* send, int len, unsigned char* rec);
int str2hex(char *str);
void AddSpecialFunctionButton(int BtnID);
int AddSpecialFunctionItem(int Num, ...);
int ShowSpecialFunction(void);
bool j_InitCanBusMode(int a1, int *EcuIDArr, char a3, int a4, int a5, float a6, int a7, int a8);
